# -*- coding: utf-8 -*-
"""
从第1行到第14行这部分python代码，对应的是matlab的第1行到第14行
对应Matlab文件: Func_Loc_Res_Coef.m
功能: 计算位置的整数格索引与残差系数
"""

import numpy as np


def func_loc_res_coef(x):
    """
    从第1行到第14行这部分python代码，对应的是matlab的第1行到第14行
    Matlab: function [p_int,res] = Func_Loc_Res_Coef(x)
    说明:
      - int: 该边界点到中心的整格数量
      - res: 该边界点在一个网格dx中所占比例
    """
    # 从第5行到第7行，对应matlab的第5行到第7行
    x = np.abs(x)
    int_part = np.floor(x)
    res = x - int_part

    # 从第8行到第11行，对应matlab的第8行到第11行
    res = np.where(res < 1e-6, 0.0, res)
    p_int = int_part + 1
    p_int = p_int - (res == 0)
    res = res + (res == 0)

    # 从第12行到第13行，对应matlab的第12行到第13行
    p_int = np.where(x == 0, 0, p_int)
    res = np.where(x == 0, 0, res)

    # 输出为浮点/整型一致性处理
    return p_int.astype(np.int64), res.astype(float)
